#ifndef _UTILS_H_
#define _UTILS_H_
#include "common.h"
/* 用于公共调用的函数的头文件 */

/*
 *description:
 *       使用空字符（空格、水平制表符以及换行符）作为分隔符来分割字符串，分割结果为是一个大小为tokensSize的数组tokens
 *       需要配合freeTokens函数使用，以释放tokens的堆空间
 *usage:
 *       int size;
 *       char **tokens = spilitcFunc("cd /usr/local", &size);      
 *       // tokens = {"cd", "/usr/local"};
 *       freeTokens(&tokens, size);
 *paras:
 *       cmd                 --待分割的命令字符串  
 *       tokensSize          --分割后列表的大小  
 *returns:
 *       分割后的token列表  
 */
char **splitFunc(const char *cmd, int *tokensSize); // 爽


/*
 *description:
 *       根据分隔符delimiters分割字符串，分割结果为一个大小为tokensSize的数组tokens
 *       需要配合freeTokens函数使用，以释放tokens的堆空间
 *usage:
 *       int size;
 *       char *delimiters = " \t\n/"
 *       char **tokens = spilitcFunc("cd /usr/local", &size);      
 *       // tokens = {"cd", "usr", "local"};
 *       freeTokens(&tokens, size);
 *paras:
 *       str                --待分割的命令字符串  
 *       delimiters         --待分割的命令字符串  
 *       tokensSize         --分割后列表的大小  
 *returns:
 *       分割后的token列表  
 */
char **splitString(const char *str, const char *delimiter, int *tokensSize);

/*
 *description:
 *      释放调用spilitcFunc动态分配的空间
 *paras:
 *      tokens            --指向token数组的指针
 *      tokensSize        --token个数  
 *returns:
 *      无返回值
 */
void freeTokens(char ***tokens, int tokensSize);


/*
 *description:
 *      释放调用spilitcFunc动态分配的空间
 *paras:
 *      tokens            --指向token数组的指针
 *      tokensSize        --token个数  
 *returns:
 *      无返回值
 */ 

// void freeArrayOfPtrs(void **array, int size);
void freeArrayOfPtrs(void **ptrToArray, int arraySize);

#endif
